package com.flashshe.ds.list
{
	import com.flashshe.ds.IStructure;
	
	

	public interface IList extends IStructure
	{				
		/**
		 * @post v被增加到list的最后
		 */
		function add(v:Object):void;
		
		/**
		 * @pre 0 <= i <= size()
		 * @post 将v插入到i位置并返回老的值
		 */
		function addAt(i:uint, v:Object):void;
						
		/**
		 * @pre list 不为空
		 * @post 返回list的最后一个值
		 */
		function getLast():Object;		
		
		/**
		 * @pre 0 <= i <= size()
		 * @post 返回在位置i的值
		 */
		function getValueAt(index:uint):Object;
		
		/**
		 * @pre 0 <= i <= size()
		 * @post 将位置i的值设为v,并返回位置i的老值
		 */
		function setValueAt(index:uint, v:Object):Object
		
		/**
		 * @pre 0 <= i <= size()
		 * @post 从list中移除索引为i的值并返回该值
		 */
		function removeAt(index:uint):Object;
						
		/**
		 * @pre list 不为空
		 * @post 从list中移除最后一个值并返回该值
		 */
		function remove():Object;
		
		/**
		 * @pre v != null
		 * @post 返回v的索引，如果没有找到则返回-1
		 */
		function indexOf(v:Object, startIndex:uint=0):int;		
				
	}
}